package bsuir.magistrate.projects.core;

import java.util.ArrayList;
import java.util.List;

public class BinFile {

	private String fileSignature;

	private int numberOfChanels;

	private int sizeOfSelectionsForOneChannel;

	private int numberOfSpectralLines;

	private int cutOffFequency;

	private float frequencyResolution;

	private float dataBlockReceptionTime;

	private int signalReceptionTime;

	private int numberOfAcceptedBlocksUser;

	private int dataSize;

	private int numberOfAcceptedBlocksSystem;

	private float maxDataValue;

	private float minDataValue;

	private List<Float> discretSignalValues = new ArrayList<Float>();

	public String getFileSignature() {
		return fileSignature;
	}

	public void setFileSignature(String fileSignature) {
		this.fileSignature = fileSignature;
	}

	public int getNumberOfChanels() {
		return numberOfChanels;
	}

	public void setNumberOfChanels(int numberOfChanels) {
		this.numberOfChanels = numberOfChanels;
	}

	public int getSizeOfSelectionsForOneChannel() {
		return sizeOfSelectionsForOneChannel;
	}

	public void setSizeOfSelectionsForOneChannel(
			int sizeOfSelectionsForOneChannel) {
		this.sizeOfSelectionsForOneChannel = sizeOfSelectionsForOneChannel;
	}

	public int getNumberOfSpectralLines() {
		return numberOfSpectralLines;
	}

	public void setNumberOfSpectralLines(int numberOfSpectralLines) {
		this.numberOfSpectralLines = numberOfSpectralLines;
	}

	public int getCutOffFequency() {
		return cutOffFequency;
	}

	public void setCutOffFequency(int cutOffFequency) {
		this.cutOffFequency = cutOffFequency;
	}

	public float getFrequencyResolution() {
		return frequencyResolution;
	}

	public void setFrequencyResolution(float frequencyResolution) {
		this.frequencyResolution = frequencyResolution;
	}

	public float getDataBlockReceptionTime() {
		return dataBlockReceptionTime;
	}

	public void setDataBlockReceptionTime(float dataBlockReceptionTime) {
		this.dataBlockReceptionTime = dataBlockReceptionTime;
	}

	public int getSignalReceptionTime() {
		return signalReceptionTime;
	}

	public void setSignalReceptionTime(int signalReceptionTime) {
		this.signalReceptionTime = signalReceptionTime;
	}

	public int getNumberOfAcceptedBlocksUser() {
		return numberOfAcceptedBlocksUser;
	}

	public void setNumberOfAcceptedBlocksUser(int numberOfAcceptedBlocksUser) {
		this.numberOfAcceptedBlocksUser = numberOfAcceptedBlocksUser;
	}

	public int getDataSize() {
		return dataSize;
	}

	public void setDataSize(int dataSize) {
		this.dataSize = dataSize;
	}

	public int getNumberOfAcceptedBlocksSystem() {
		return numberOfAcceptedBlocksSystem;
	}

	public void setNumberOfAcceptedBlocksSystem(int numberOfAcceptedBlocksSystem) {
		this.numberOfAcceptedBlocksSystem = numberOfAcceptedBlocksSystem;
	}

	public float getMaxDataValue() {
		return maxDataValue;
	}

	public void setMaxDataValue(float maxDataValue) {
		this.maxDataValue = maxDataValue;
	}

	public float getMinDataValue() {
		return minDataValue;
	}

	public void setMinDataValue(float minDataValue) {
		this.minDataValue = minDataValue;
	}

	public List<Float> getDiscretSignalValues() {
		return discretSignalValues;
	}

	public void setDiscretSignalValues(List<Float> discretSignalValues) {
		this.discretSignalValues = discretSignalValues;
	}

	@Override
	public String toString() {
		StringBuilder stringBuilder = new StringBuilder();
		stringBuilder.append("File signature: " + getFileSignature());
		stringBuilder.append("\n");
		stringBuilder.append("Number of channels: " + getNumberOfChanels());
		stringBuilder.append("\n");
		stringBuilder.append("Size of selection for one channel: "
				+ getSizeOfSelectionsForOneChannel());
		stringBuilder.append("\n");
		stringBuilder.append("Number of spectral lines: "
				+ getNumberOfSpectralLines());
		stringBuilder.append("\n");
		stringBuilder.append("Cutoff frequency: " + getCutOffFequency());
		stringBuilder.append("\n");
		stringBuilder.append("Frequency resolution: "
				+ getFrequencyResolution());
		stringBuilder.append("\n");
		stringBuilder.append("Data block reception time (sec): "
				+ getDataBlockReceptionTime());
		stringBuilder.append("\n");
		stringBuilder.append("Signal reception time (sec): "
				+ getSignalReceptionTime());
		stringBuilder.append("\n");
		stringBuilder.append("Number of accepted blocks (user): "
				+ getNumberOfAcceptedBlocksUser());
		stringBuilder.append("\n");
		stringBuilder.append("The whole data size: " + getDataSize());
		stringBuilder.append("\n");
		stringBuilder.append("Number of accepted blocks (system): "
				+ getNumberOfAcceptedBlocksSystem());
		stringBuilder.append("\n");
		stringBuilder.append("MAX data value: " + getMaxDataValue());
		stringBuilder.append("\n");
		stringBuilder.append("MIN data value: " + getMinDataValue());
		stringBuilder.append("\n");
		stringBuilder.append("Discret values array size:"
				+ getDiscretSignalValues().size());
		return stringBuilder.toString();
	}
}
